package com.cool.mybatis.mapper;

import com.cool.mybatis.entity.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author ifredomvip@gmail.com
 * @Date 2022/5/26 14:07
 * @Version 1.0.0
 * @Description
 **/
public interface DynamicSqlMapper {
    /**
     * 条件查询
     * @param emp emp
     * @return List<Emp>
     **/
    List<Emp> selectEmpByCondition(Emp emp);
    /**
     * where标签
     * @param emp emp
     * @return List<Emp>
     **/
    List<Emp> selectEmpByWhere(Emp emp);
    /**
     * trim标签
     * sql语句
     * @param emp emp
     * @return List<Emp>
     **/
    List<Emp> selectEmpByTrim(Emp emp);

    /**
     * choose,when,otherwise标签
     * where只会存在一条判断语句 ：select * from t_emp WHERE sex=?
     * 一条判定不为空，那么后续就不会再判断
     * sql语句
     * @param emp emp
     * @return List<Emp>
     **/
    List<Emp> selectEmpByChoose(Emp emp);

    /**
     * foreach标签
     * 批量删除
     * @param ids ids
     * @return int
     *     mybatis会把参数自动放在map中，数组也是如此。
     *     ！！ 因此需要添加@Param("MyKey"),将数组每一项，每一个map键值对设置为:key的值为MyKey,value的值为 数组的每一项
     *
     *     Cause: org.apache.ibatis.binding.BindingException: Parameter 'ids' not found. Available parameters are [array, arg0]
     **/
    int deleteEmpByForeach(@Param("ids") Integer[] ids);

    /**
     * collection标签
     * 批量添加
     * @param employees employees
     * @return int
     **/
    int insertEmpByForeach(@Param("employees") List<Emp> employees);

    /**
     * Sql标签
     * @return List<Emp>
     **/
    List<Emp> selectEmpBySql();
}
